import {pinyin} from './pinyin.js';

const isChinese = (temp) => {
    let re = /[^\u4E00-\u9FA5]/;
    if (re.test(temp)) {
        return false;
    }
    return true;
};
const isChar = (char) => {
    let reg = /[A-Za-z]/;
    if (!reg.test(char)) {
        return false;
    }
    return true;
};
//  数组格式默认显示text
export const sort = (arr, text = 'user_name') => {
    if (!String.prototype.localeCompare) return null;
    let letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ#'.split(''); //ABCDEFGHJKLMNOPQRSTWXYZ
    let zh = '和斯柯达好使的看'.split('');
    let result = [];
    for (let i = 0; i < letters.length; i++) {
        let curr = { title: letters[i], group: [] }; //字母对象，data数据
        arr.forEach( n => {
            let initial = n[text][0]; //截取第一个字符
            if (initial === letters[i] || initial === letters[i].toLowerCase()) {
                //首字符是英文的
                curr.group.push(n);
            } else if (zh[i] !== '*' && isChinese(initial)) {
                //判断是否是无汉字,是否是中文
                let chinaName = pinyin.getFullChars(initial).split('')[0]; //直接使用pinyin中方法
                if (chinaName === letters[i] || chinaName === letters[i].toLowerCase()) {
                    //首字符是英文的
                    curr.group.push(n);
                }
            }
            if (letters[i] === '#' && !isChar(initial) && !isChinese(initial)) {
                curr.group.push(n);
            }
        });
        if (curr.group.length) {
            curr.group = Array.from(new Set(curr.group)); // 去重: 不知道为什么#开头的会重复,其他的不会
            result.push(curr);
        }
    }
    return result;
};
